Skip to content

ci: coverage-fanout sender + unified single Python Integration Tests check#879

Open
eric-wang-1990 wants to merge 16 commits into
mainfrom
eric-wang-1990/ci/coverage-fanout-sender
Open

ci: coverage-fanout sender + unified single Python Integration Tests check#879
eric-wang-1990 wants to merge 16 commits into
mainfrom
eric-wang-1990/ci/coverage-fanout-sender

Conversation

@eric-wang-1990

@eric-wang-1990 eric-wang-1990 commented Jul 23, 2026

Copy link
Copy Markdown
Contributor

Summary

Brings the databricks-sql-python CI sender fully in line with the other drivers' cross-repo integration flow. Three related changes to .github/workflows/trigger-integration-tests.yml:

  1. Coverage fan-out on merge — on a source-affecting merge to main, dispatch coverage-fanout to databricks-driver-test, whose tracker opens a tracking issue and runs the language-agnostic fan-out. (Fork merges are intentionally excluded — no secret access; picked up by the next maintainer-branch merge.)

  2. Unified single check — the driver-test receiver (databricks-python-integration-tests.yml, its paired PR) now fans out the thrift + kernel backends internally and reports one aggregated Python Integration Tests check, matching go/nodejs. This collapses the five MODES=['thrift','kernel'] two-check loops (skip / label auto-pass / dispatch-fail / merge-queue auto-pass / merge-queue-fail) into a single Python Integration Tests check, and adds proxy_mode: replay to both dispatch payloads (the PR gate is replay-only, like every other sender).

  3. Comment-link fix — the "tests triggered" PR comment now links to the correct receiver workflow (databricks-python-integration-tests.yml) and names the single check.

The dispatch was already a single python-pr-test (no per-mode fan-out on the sender side). The shared reusable workflow + weekly slow cron in driver-test are untouched — they keep their per-mode Python Proxy Tests / <mode> checks for cron use.

Ordering / follow-up

  • Land the driver-test receiver PR (#913) first — it creates the Python Integration Tests check name.
  • Branch protection (manual, after both land): swap required checks — remove Python Proxy Tests / thrift + / kernel, add Python Integration Tests. Doing it out of order would deadlock PRs, so it is sequenced last.

Test Plan

  • YAML parses; all five check-creations post Python Integration Tests; both dispatches carry proxy_mode: replay; no MODES loop remains
  • trigger-coverage-fanout job preserved (source-gated, fork-excluded, serialized per PR)
  • Post-merge (receiver): workflow_dispatch -f proxy_mode=replay fans out thrift+kernel → single green Python Integration Tests check

This pull request and its description were written by Isaac.

…ce PRs

Wires databricks-sql-python into the multi-language coverage fan-out. When a PR merges to
main and touched driver source (a file under src/), dispatch a
`coverage-fanout` repository_dispatch to databricks/databricks-driver-test.
Its coverage-fanout-tracker.yml then opens a tracking issue and runs the
language-agnostic fan-out (a spec authored from this PR's diff, conformed
across every driver).

- Adds `closed` to the pull_request trigger types; the new trigger-coverage-fanout
  job gates on pull_request.merged == true.
- Source-path filter (src/): docs/CI/test-only merges don't warrant a full fan-out.
- Reuses the existing INTEGRATION_TEST App token (scoped to driver-test) + the
  same peter-evans/repository-dispatch pin adbc-drivers/databricks uses.
- Tightens skip-integration-tests-pr's guard to exclude `closed` so it doesn't
  re-stamp a check on merged PRs.

Co-authored-by: Isaac
Signed-off-by: Eric Wang <e.wang@databricks.com>
Copilot AI review requested due to automatic review settings July 23, 2026 20:35

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@peco-review-bot peco-review-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Verdict: 1 Low

Looks good — a well-scoped CI addition that mirrors the existing dispatch pattern. One low-severity note: the new trigger-coverage-fanout job omits an explicit permissions: block that every sibling job in this file declares, so its pulls.listFiles call relies on the org's default GITHUB_TOKEN permissions. The closed-event guards and skip-integration-tests-pr exclusion are correct, and the client-payload has no injection surface (no PR-title interpolation).

Comment thread .github/workflows/trigger-integration-tests.yml
@eric-wang-1990 eric-wang-1990 added the engineer-bot Maintainer-applied gate: triggers engineer-bot (bug-fix on issue / take-over on PR). label Jul 23, 2026
Addresses:
  - #3641231149 at .github/workflows/trigger-integration-tests.yml:468

Signed-off-by: peco-engineer-bot[bot] <peco-engineer-bot[bot]@users.noreply.github.com>

@peco-review-bot peco-review-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Verdict: 1 Medium

Looks good overall — the closed event is added cleanly and all existing jobs have explicit event/action guards, so none misfire on it (and skip-integration-tests-pr correctly excludes closed). One medium concern: the new trigger-coverage-fanout job has no base-branch guard, so it fires for merges into any branch, not just main as the description intends.

Comment thread .github/workflows/trigger-integration-tests.yml
Addresses:
  - #3641618444 at .github/workflows/trigger-integration-tests.yml:459

Signed-off-by: peco-engineer-bot[bot] <peco-engineer-bot[bot]@users.noreply.github.com>

@peco-review-bot peco-review-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ No issues identified by the review bot.

@peco-review-bot peco-review-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Verdict: 1 Low

Looks good — the closed-event guard audit checks out: every pre-existing job correctly ignores closed (synchronize/labeled/merge_group), skip-integration-tests-pr now excludes it as intended, and the new trigger-coverage-fanout job is properly gated on merged == true + base.ref == 'main'. Payload interpolations are injection-safe and the failure-handler gate reasoning is sound. One low-severity note about duplicate dispatch on manual re-runs.

Comment thread .github/workflows/trigger-integration-tests.yml
Addresses:
  - #3641958020 at .github/workflows/trigger-integration-tests.yml:540

Signed-off-by: peco-engineer-bot[bot] <peco-engineer-bot[bot]@users.noreply.github.com>

@peco-review-bot peco-review-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Verdict: 1 Medium

Looks solid — the closed event is correctly fenced off from every pre-existing job, and the new trigger-coverage-fanout job's gating/failure-handler reasoning is sound. One medium concern: for merged fork PRs, pull_request events don't carry secrets, so the fan-out (and its failure comment) can silently no-op.

Comment thread .github/workflows/trigger-integration-tests.yml
Addresses:
  - #3641977677 at .github/workflows/trigger-integration-tests.yml:494

Signed-off-by: peco-engineer-bot[bot] <peco-engineer-bot[bot]@users.noreply.github.com>

@peco-review-bot peco-review-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Verdict: 1 Medium

Looks solid overall — the closed-event wiring is well-guarded (every other job correctly excludes the new event) and the failure-handler/truncation reasoning is sound. One medium concern: fork src merges aren't cleanly excluded at the job level, so they produce a red workflow run rather than the silent exclusion the header comment claims.

Comment thread .github/workflows/trigger-integration-tests.yml
Addresses:
  - #3641995560 at .github/workflows/trigger-integration-tests.yml:476

Signed-off-by: peco-engineer-bot[bot] <peco-engineer-bot[bot]@users.noreply.github.com>

@peco-review-bot peco-review-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Verdict: 1 Low

Looks good — a carefully-scoped CI change with thorough gating and inline rationale. I verified the whole workflow: on the new closed/merged event no existing job misfires (remove-label-on-new-commit gates on synchronize, skip-integration-tests-pr now excludes closed, trigger-tests-pr on labeled, merge-queue-python on merge_group), and the new trigger-coverage-fanout job correctly requires merged==true + base main + non-fork, serializes via concurrency, and fails safe on the source-detection path. One low-severity permissions observation noted inline.

Comment thread .github/workflows/trigger-integration-tests.yml
Addresses:
  - #3642007200 at .github/workflows/trigger-integration-tests.yml:493

Signed-off-by: peco-engineer-bot[bot] <peco-engineer-bot[bot]@users.noreply.github.com>

@peco-review-bot peco-review-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ No issues identified by the review bot.

@peco-review-bot peco-review-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Verdict: 1 Low

Looks good — a focused, well-documented CI change. Verified every job guard is safe against the newly-added closed event (only the new trigger-coverage-fanout job fires on it, correctly gated on merged == true), and the dispatch payload carries no user-controlled free text so there's no injection risk. One low edge-case note on the fork-exclusion condition when a head repo has been deleted.

Comment thread .github/workflows/trigger-integration-tests.yml

@peco-review-bot peco-review-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ No issues identified by the review bot.

eric-wang-1990 and others added 2 commits July 24, 2026 00:23
The "Integration tests triggered" PR comment (and two header comments) linked
to python-proxy-tests.yml, which does not exist (404) — the receiver file is
databricks-sql-python-proxy-tests.yml. Point to the correct workflow and note
that the authoritative results are the "Python Proxy Tests / thrift" and
"Python Proxy Tests / kernel" checks posted back on the PR.

Co-authored-by: Isaac
Signed-off-by: eric-wang-1990 <e.wang@databricks.com>
Addresses:
  - #3643591969 at .github/workflows/trigger-integration-tests.yml:455

Signed-off-by: peco-engineer-bot[bot] <peco-engineer-bot[bot]@users.noreply.github.com>
@github-actions

Copy link
Copy Markdown

Integration tests triggered. View workflow runs. Results post back here as the "Python Proxy Tests / thrift" and "Python Proxy Tests / kernel" checks.

@peco-review-bot peco-review-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ No issues identified by the review bot.

Python was the last multi-backend driver posting per-mode checks
(`Python Proxy Tests / thrift` + `/ kernel`). The new standalone receiver
in databricks-driver-test (databricks-python-integration-tests.yml) fans
out both backends internally and reports ONE aggregated check, matching
go/nodejs.

Collapse the five `MODES=['thrift','kernel']` two-check loops (skip / label
auto-pass / dispatch-fail / merge-queue auto-pass / merge-queue-fail) into a
single `Python Integration Tests` check, add `proxy_mode: replay` to both
dispatch payloads for parity with the other senders, and fix the PR-comment
link to the new receiver workflow. The dispatch itself was already a single
`python-pr-test` (no per-mode fan-out on the sender).

Follow-up (branch protection, done separately): swap the required-checks
list — remove `Python Proxy Tests / thrift` and `/ kernel`, add
`Python Integration Tests`. Sequenced after this + the receiver land to
avoid a deadlock.

Co-authored-by: Isaac
Signed-off-by: eric-wang-1990 <e.wang@databricks.com>
@github-actions

Copy link
Copy Markdown

Integration test approval reset.

New commits were pushed to this PR. The integration-test label has been automatically removed for security.

A maintainer must re-review the changes and re-add the label to trigger tests again.

Latest commit: 419cadb

@peco-review-bot peco-review-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Verdict: 1 Low

Looks good — CI-only change that cleanly collapses the per-mode Python Proxy Tests checks into a single Python Integration Tests check and adds a well-guarded post-merge coverage fan-out. Job gating (closed/merged/non-fork), the source != 'false' failure-handler logic, and the 3000-file truncation handling are all sound. One low-severity note on a change-detection divergence between the IT gate and the fan-out gate.

Comment thread .github/workflows/trigger-integration-tests.yml
Addresses:
  - #3643898716 at .github/workflows/trigger-integration-tests.yml:484

Signed-off-by: peco-engineer-bot[bot] <peco-engineer-bot[bot]@users.noreply.github.com>

@peco-review-bot peco-review-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ No issues identified by the review bot.

@sreekanth-db sreekanth-db left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approving — reviewed with Isaac Review, no blocking issues.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

engineer-bot Maintainer-applied gate: triggers engineer-bot (bug-fix on issue / take-over on PR).

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants